package com.iwhalecloud.bss.kite.cucc.client.api.attr;

import com.iwhalecloud.bss.kite.cucc.client.dto.attr.AreaCode;
import com.iwhalecloud.bss.kite.cucc.client.dto.attr.AreaInquiry;
import com.iwhalecloud.bss.kite.cucc.client.dto.attr.ChannelKindDTO;
import com.iwhalecloud.bss.kite.cucc.client.dto.attr.StdAddrQry;
import com.iwhalecloud.bss.kite.cucc.client.dto.attr.UnicomRegion;
import com.iwhalecloud.bss.kite.cucc.client.dto.attr.UnicomRegionQry;
import com.iwhalecloud.bss.kite.cucc.client.dto.devInfo.response.QueryChannelInfoSerRsp;
import com.iwhalecloud.bss.kite.cucc.client.dto.order.ExecAddressDTO;

import java.util.List;

/**
 * @Interface : IUnicomRegionService
 * @Description : 联通集团区域编码服务
 * @Author : xie.zhengjun
 * @Date : 2020/9/18 16:28
 */
public interface IUnicomRegionService {
    /**
     * 根据区域编码获取子区域
     *
     * @param regionCode 区域编码
     * @return 子区域列表
     */
    List<UnicomRegion> listSubRegion(String regionCode);

    /**
     * 根据区域编码获取子区域（支持传入多个区域编码，英文逗号隔开）
     *
     * @param regionCode 区域编码
     * @return 子区域列表
     */
    List<List<UnicomRegion>> listSubRegionMulti(String regionCode);

    /**
     * 根据区域编码获取区域详情
     *
     * @param regionCode 区域编码
     * @return 区域详情
     */
    UnicomRegion getRegion(String regionCode);

    /**
     * 判断是否叶子节点
     *
     * @param regionCode 区域编码
     * @return 是否叶子节点
     */
    boolean isLeafRegion(String regionCode);

    /**
     * 查询标准地址
     *
     * @param stdAddrQry 查询标准地址入参对象
     * @return 满足条件的标准地址集合
     */
    List<ExecAddressDTO> queryStdAddr(StdAddrQry stdAddrQry, String custId);
    /**
     * 根据orgId获取一级渠道
     *
     * @return 一级渠道
     */
    List<ChannelKindDTO> queryChannel();

    List<ChannelKindDTO> queryChannelByLevel(String channelKindId);

    List<QueryChannelInfoSerRsp> queryChannelByChannelLevel(String chnlKindId);

    /**
     * 应用系统区域查询服务(国内)
     * @author zhang.song
     * @date 2021-04-22 19:51
     * @param unicomRegionQry
     * @return java.util.List<com.iwhalecloud.bss.kite.cucc.client.dto.attr.UnicomRegion>
     */
    List<UnicomRegion> innerSubRegionFromPlatform(UnicomRegionQry unicomRegionQry);

    /**
     * 根据上级区域编码查询省市县子区域信息(国内+国际)（调运营平台接口查询），条件为空，默认查所有省
     */
    List<UnicomRegion> subRegionFromPlatform(UnicomRegionQry unicomRegionQry);

    /**
     * 根据上级区域编码查询省市县子区域信息(国内+国际)（调运营平台接口查询）（多个区域编码），条件为空，默认查所有省
     */
    List<List<UnicomRegion>> subRegionMultiFromPlatform(List<UnicomRegionQry> unicomRegionQryList);

    /**
     * 根据上级区域编码查询省市县子区域信息(国内+国际)（调运营平台接口查询）
     * @author zhang.song
     * @date 2021-03-20 16:30
     * @param regionCode 依次省市县编码英文逗号隔开
     * @return java.util.List<java.util.List<com.iwhalecloud.bss.kite.cucc.client.dto.attr.UnicomRegion>>
     */
    List<List<UnicomRegion>> subRegionMultiFromPlatformByRegionCode(String regionCode);

    /**
     * 应用系统区域查询服务(国际)
     * @author zhang.song
     * @date 2021-04-22 17:30
     * @param unicomRegionQry
     * @return java.util.List<com.iwhalecloud.bss.kite.cucc.client.dto.attr.UnicomRegion>
     */
    List<UnicomRegion> interSubRegionFromPlatform(UnicomRegionQry unicomRegionQry);

    /**
     * 3.4.行政区域编码转换服务
     * @author zhang.song
     * @date 2021-04-12 11:50
     * @param areaInquiry
     * @return com.iwhalecloud.bss.kite.cucc.client.dto.attr.AreaCode
     */
    AreaCode regionTransform(AreaInquiry areaInquiry);

    /**
     * 根据区域编码列表获取区域详情列表
     * @author zhang.song
     * @date 2021-04-20 20:41
     * @param regionCodeList
     * @return java.util.List<com.iwhalecloud.bss.kite.cucc.client.dto.attr.UnicomRegion>
     */
    List<UnicomRegion> getRegionList(List<String> regionCodeList);


    List<UnicomRegion> getUnicomRegions(String regionCode);

    void insertInfAreaInfoBatch(List<UnicomRegion> batchQryAreaInfos);

    void deleteInfAreaInfoBatch(String regionLevel);

}
